//
//  MHNetworkService.swift
//  MHNetworkService
//
//  Created by huangjia on 2017/5/3.
//  Copyright © 2017年 xyhuangjia@yeah.net. All rights reserved.
//

import Foundation
import Alamofire



class MHNetworkService{
    
    /*
     1.域名：
     2.端口：跟在域名后面的是端口，域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分，如果省略端口部分，将采用默认端口
     3.虚拟目录：从域名后的第一个“/”开始到最后一个“/”为止，是虚拟目录部分。虚拟目录也不是一个URL必须的部分。
     4.文件名部分：从域名后的最后一个“/”开始到“？”为止，是文件名部分，如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止，是文件部分，如果没有“？”和“#”，那么从域名后的最后一个“/”开始到结束，都是文件名部分。
     5.锚部分：从“#”开始到最后，都是锚部分。
     6.参数部分：从“？”开始到“#”为止之间的部分为参数部分，又称搜索部分、查询部分。
     */
    
//    struct MHURLType {
//        <#fields#>
//    }
//  
    /// 接口使用的链接
    struct MHURLContains {
        static var domainName: String?
        static var portName: String?
        static var fileName: String?
        static var URLString: String?
    }

    typealias MHNetworkSuccess = (_ response:[String : AnyObject]) -> ()
    
    typealias MHNetworkFailure = (_ error:NSError) -> ()
    
    /// InitWork
    ///
    /// - Parameters:
    ///   - domainName: 域名
    ///   - portName: 端口号
    ///   - fileName: 文件名
    class func initNetwork(domainName:String,portName:String,fileName:String){
      
        MHURLContains.domainName = domainName
        MHURLContains.portName = portName
        MHURLContains.fileName = fileName
        print(domainName)
    }
    
    
    
    class func initNetworkWithURLString(domainName:String,portName:String){
        MHURLContains.URLString = domainName
        print(portName)
    }

    
    /// <#Description#>
    ///
    /// - Parameters:
    ///   - domainName: <#domainName description#>
    ///   - portName: <#portName description#>
    class func initNetworkWithPort(domainName:String,portName:String){
        MHURLContains.domainName = domainName
        MHURLContains.portName = portName
        print(portName)
    }
    
    /// <#Description#>
    ///
    /// - Parameters:
    ///   - domainName: <#domainName description#>
    ///   - fileName: <#fileName description#>
    class func initNetworkWithFileName(domainName:String,fileName:String){
        MHURLContains.domainName = domainName
        MHURLContains.fileName = fileName
        print(fileName)
    }

    /// <#Description#>
    ///
    /// - Parameters:
    ///   - urlString: <#urlString description#>
    ///   - success: <#success description#>
    ///   - failure: <#failure description#>
    class func Get(urlString:String,
                   success:@escaping MHNetworkSuccess,
                   failure:@escaping MHNetworkFailure) {
        
        print(MHURLContains.domainName!)
    
        let URLString = String.init(format: "%@%@", MHURLContains.domainName!,urlString)
        let utf8SString = URLString.addingPercentEncoding(withAllowedCharacters: NSCharacterSet .urlQueryAllowed)
        print("格式化后字符串：\(utf8SString!)")
        Alamofire.request(utf8SString!, method: .get, encoding: JSONEncoding.default)
            .responseJSON { response in
                //                    debugPrint(response)
                switch response.result {
                case .success(let value):
                    //                         print(value)
                    success(value as! [String : AnyObject] )
                case .failure(let value):
                    failure(value as NSError)
                }
        }
        
    }
 
}


